package com.vito.base.authoriza.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.vito.base.authoriza.model.DeptModel;
import com.vito.base.model.MyHashMap;

public interface DeptMapper {
	List<DeptModel> queryDeptTree(DeptModel dept);
	List<DeptModel> queryDeptByPage(Map<String, Object> param);
	Integer queryDeptCountByPage(Map<String, Object> param);
	List<DeptModel> queryTreeAll(Map<String,Object> dept);
	Integer saveDept(DeptModel dept);
	Integer updateDept(DeptModel dept);
	Integer deleteDept(DeptModel dept);
	Integer saveDeptRole(DeptModel dept);
	DeptModel queryDeptById(DeptModel dept);
	List<DeptModel> queryDeptByUserID(String userId);
	String queryDeptParentId(DeptModel dept);
	void updDisableDept(DeptModel dept);
	List<DeptModel> getDeptByPId(String pid);
	List<DeptModel> findDeptTreeByUserId(Map<String,String> map);
	/**
	 * 超级管理员和管理员部门管理分页查询 
	 * @param param
	 * @return
	 */
	List<DeptModel> querySuperUserDeptByPage(Map<String, Object> param);
	Integer querySuperUserDeptByPageCount(Map<String, Object> param);
	List<DeptModel> queryTreeSuperAll(Map<String,Object> dept);
	/**
	 * 查询当前部门的根部门
	 * @param deptId
	 * @return
	 */
	List<DeptModel> queryRootDept(String deptId);
	
	/**
	 * 根据区域查询物业公司的数量
	 * @param cityId
	 * @return
	 */
	List<MyHashMap> findDeptStatisticsByCity(Map<String, Object> map);
	
	/**
	 * 根据区域查询物业公司已支付订单的统计信息
	 * @param areaId
	 * @return
	 */
	List<MyHashMap> findOrderStatisticsByCity(String areaId);
	/**
	 * 查询根部门以下的部门结构
	 * TODO
	 * 2017年1月12日
	 * @param rootDept
	 * @return
	 */
	public List<Map<String, String>> queryDeptTreeByRootDept(String rootDept);
	/**
	 * 查询当前部门及其子部门
	 * @param deptId
	 */
	public List<Map<String,String>> queryDeptAndSubDeptByDeptId(String deptId);
	/**
	 * 查询当前部门用户关系
	 * @param deptId
	 */
	public List<Map<String,String>> queryDeptUserByDeptId(String deptId);
	
	public int checkParent(DeptModel dept);
	
	public int updateParentDeptPid(DeptModel dept);
	public String queryDeptCodeById (@Param("deptId") String  deptId);
	Integer updateDeptLeafs(DeptModel dept);
	
	public List<Map<String,String>> queryDeptAndSubDeptByDept(DeptModel dept);
}
